cmake_minimum_required(VERSION 3.12)
project(CPlusPlusThings)

set(CMAKE_CXX_STANDARD 11)

add_executable(CPlusPlusThings_basic_content_abstract_abstract
        basic_content/abstract/abstract.cpp)
add_executable(CPlusPlusThings_basic_content_abstract_derived_full
        basic_content/abstract/derived_full.cpp)
add_executable(CPlusPlusThings_basic_content_abstract_interesting_facts1
        basic_content/abstract/interesting_facts1.cpp)
add_executable(CPlusPlusThings_basic_content_abstract_interesting_facts2
        basic_content/abstract/interesting_facts2.cpp)
add_executable(CPlusPlusThings_basic_content_abstract_interesting_facts3
        basic_content/abstract/interesting_facts3.cpp)
add_executable(CPlusPlusThings_basic_content_abstract_interesting_facts4
        basic_content/abstract/interesting_facts4.cpp)
add_executable(CPlusPlusThings_basic_content_abstract_interesting_facts5
        basic_content/abstract/interesting_facts5.cpp)
add_executable(CPlusPlusThings_basic_content_abstract_pure_virtual
        basic_content/abstract/pure_virtual.cpp)
add_executable(CPlusPlusThings_basic_content_assert_assert
        basic_content/assert/assert.c)
add_executable(CPlusPlusThings_basic_content_assert_ignore_assert
        basic_content/assert/ignore_assert.c)
add_executable(CPlusPlusThings_basic_content_bit_ignore_learn
        basic_content/bit/learn.cpp)
add_executable(CPlusPlusThings_basic_content_c_poly_c++_examp
        basic_content/c_poly/c++_examp.cpp)
add_executable(CPlusPlusThings_basic_content_c_poly_c_examp
        basic_content/c_poly/c_examp.c)
add_executable(CPlusPlusThings_basic_content_const_const_num basic_content/const/const_num.cpp)
add_executable(CPlusPlusThings_basic_content_const_const_function basic_content/const/const_function.cpp)
add_executable(CPlusPlusThings_basic_content_const_class_const_c++11_example
        basic_content/const/class_const/c++11_example/main.cpp)
add_executable(CPlusPlusThings_basic_content_const_class_const_first_example
        basic_content/const/class_const/first_example/main.cpp)
add_executable(CPlusPlusThings_basic_content_const_class_const_overload_example
        basic_content/const/class_const/overload_example/main.cpp)
add_executable(CPlusPlusThings_basic_content_const_class_const_static_example
        basic_content/const/class_const/static_example/main.cpp)
add_executable(CPlusPlusThings_basic_content_const_extern_const_const_file1
        basic_content/const/extern_const/const_file1.cpp
        basic_content/const/extern_const/const_file2.cpp
)
add_executable(CPlusPlusThings_basic_content_const_extern_const_file1
        basic_content/const/extern_const/file1.cpp
        basic_content/const/extern_const/file2.cpp
)
add_executable(CPlusPlusThings_basic_content_const_funciton_const_condition1_condition1
        basic_content/const/funciton_const/condition1/condition1.cpp
)
add_executable(CPlusPlusThings_basic_content_const_funciton_const_condition1_condition2
        basic_content/const/funciton_const/condition1/condition2.cpp
)
add_executable(CPlusPlusThings_basic_content_const_funciton_const_condition1_condition3
        basic_content/const/funciton_const/condition1/condition3.cpp
)
add_executable(CPlusPlusThings_basic_content_const_funciton_const_condition2_condition1
        basic_content/const/funciton_const/condition2/condition1.cpp
)
add_executable(CPlusPlusThings_basic_content_const_funciton_const_condition2_condition2
        basic_content/const/funciton_const/condition2/condition2.cpp
)
add_executable(CPlusPlusThings_basic_content_const_funciton_const_condition2_condition3
        basic_content/const/funciton_const/condition2/condition3.cpp
)
add_executable(CPlusPlusThings_basic_content_const_funciton_const_condition3_condition1
        basic_content/const/funciton_const/condition3/condition1.cpp
)
add_executable(CPlusPlusThings_basic_content_decltype_decltype
        basic_content/decltype/decltype.cpp
)
add_executable(CPlusPlusThings_basic_content_enum_classic_practice
        basic_content/enum/classic_practice.cpp
)
add_executable(CPlusPlusThings_basic_content_enum_tradition_color
        basic_content/enum/tradition_color.cpp
)
add_executable(CPlusPlusThings_basic_content_explicit_explicit
        basic_content/explicit/explicit.cpp
)
add_executable(CPlusPlusThings_basic_content_extern_extern_c_add_c
        basic_content/extern/extern_c/add.c
)
add_executable(CPlusPlusThings_basic_content_extern_extern_c_add_cpp
        basic_content/extern/extern_c++/add.cpp
)
add_executable(CPlusPlusThings_basic_content_extern_extern_c++_add_c
        basic_content/extern/extern_c++/add.c
)
add_executable(CPlusPlusThings_basic_content_extern_extern_c++_add_cpp
        basic_content/extern/extern_c++/add.cpp
)
add_executable(CPlusPlusThings_basic_content_friend_friend_class
        basic_content/friend/friend_class.cpp
)
add_executable(CPlusPlusThings_basic_content_friend_friend_func
        basic_content/friend/friend_func.cpp
)
add_executable(CPlusPlusThings_basic_content_func_pointer_func_pointer
        basic_content/func_pointer/func_pointer.cpp
)
add_executable(CPlusPlusThings_basic_content_inline_inline
        basic_content/inline/inline.cpp
)
add_executable(CPlusPlusThings_basic_content_inline_inline_virtual
        basic_content/inline/inline_virtual.cpp
)
add_executable(CPlusPlusThings_basic_content_macro_do_while
        basic_content/macro/do_while.cpp
)
add_executable(CPlusPlusThings_basic_content_macro_sig_examp
        basic_content/macro/sig_examp.cpp
)
add_executable(CPlusPlusThings_basic_content_macro_maohao
        basic_content/maohao/maohao.cpp
)
add_executable(CPlusPlusThings_basic_content_pointer_refer_copy_construct
        basic_content/pointer_refer/copy_construct.cpp
)
add_executable(CPlusPlusThings_basic_content_pointer_refer_effec
        basic_content/pointer_refer/effec.cpp
)
add_executable(CPlusPlusThings_basic_content_sizeof_blackclass
        basic_content/sizeof/blackclass.cpp
)
add_executable(CPlusPlusThings_basic_content_sizeof_genA
        basic_content/sizeof/genA.cpp
)
add_executable(CPlusPlusThings_basic_content_sizeof_geninhe
        basic_content/sizeof/geninhe.cpp
)
add_executable(CPlusPlusThings_basic_content_sizeof_moreinhe
        basic_content/sizeof/moreinhe.cpp
)
add_executable(CPlusPlusThings_basic_content_sizeof_morevir
        basic_content/sizeof/morevir.cpp
)
add_executable(CPlusPlusThings_basic_content_sizeof_static
        basic_content/sizeof/static.cpp
)
add_executable(CPlusPlusThings_basic_content_sizeof_virinhe
        basic_content/sizeof/virinhe.cpp
)
add_executable(CPlusPlusThings_basic_content_sizeof_virmoreinhe
        basic_content/sizeof/virmoreinhe.cpp
)
add_executable(CPlusPlusThings_basic_content_static_nostatic_class
        basic_content/static/nostatic_class.cpp
)
add_executable(CPlusPlusThings_basic_content_static_static_class
        basic_content/static/static_class.cpp
)
add_executable(CPlusPlusThings_basic_content_static_static_demo
        basic_content/static/static_demo.cpp
)
add_executable(CPlusPlusThings_basic_content_static_static_error_variable
        basic_content/static/static_error_variable.cpp
)
add_executable(CPlusPlusThings_basic_content_static_static_funciton
        basic_content/static/static_funciton.cpp
)
add_executable(CPlusPlusThings_basic_content_static_static_variable
        basic_content/static/static_variable.cpp
)
add_executable(CPlusPlusThings_basic_content_struct_ext_struct_func
        basic_content/struct/ext_struct_func.cpp
)
add_executable(CPlusPlusThings_basic_content_struct_struct_func
        basic_content/struct/struct_func.c
)
add_executable(CPlusPlusThings_basic_content_struct_struct_funcpp
        basic_content/struct/struct_func.cpp
)
add_executable(CPlusPlusThings_basic_content_struct_struct_func_func
        basic_content/struct/struct_func_func.cpp
)
add_executable(CPlusPlusThings_basic_content_this_person
        basic_content/this/person.cpp
)
add_executable(CPlusPlusThings_basic_content_union_union
        basic_content/union/union.cpp
)
add_executable(CPlusPlusThings_basic_content_virtual_set1_emp
        basic_content/virtual/set1/emp.cpp
)
add_executable(CPlusPlusThings_basic_content_virtual_set2_default_arg
        basic_content/virtual/set2/default_arg.cpp
)
add_executable(CPlusPlusThings_basic_content_virtual_set3_copy_consrtuct
        basic_content/virtual/set3/copy_consrtuct.cpp
)
add_executable(CPlusPlusThings_basic_content_virtual_set3_full_virde
        basic_content/virtual/set3/full_virde.cpp
)
add_executable(CPlusPlusThings_basic_content_virtual_set3_inline_virtual
        basic_content/virtual/set3/inline_virtual.cpp
)
add_executable(CPlusPlusThings_basic_content_virtual_set3_vir_con
        basic_content/virtual/set3/vir_con.cpp
)
add_executable(CPlusPlusThings_basic_content_virtual_set3_vir_de
        basic_content/virtual/set3/vir_de.cpp
)
add_executable(CPlusPlusThings_basic_content_virtual_set3_virtual_function
        basic_content/virtual/set3/virtual_function.cpp
)
add_executable(CPlusPlusThings_basic_content_virtual_set3_virtual_function1
        basic_content/virtual/set3/virtual_function1.cpp
)
add_executable(CPlusPlusThings_basic_content_virtual_set3_virtual_inline
        basic_content/virtual/set3/virtual_inline.cpp
)
add_executable(CPlusPlusThings_basic_content_virtual_set4_rtti
        basic_content/virtual/set4/rtti.cpp
)
add_executable(CPlusPlusThings_basic_content_volatile_noopt_vola
        basic_content/volatile/noopt_vola.cpp
)
add_executable(CPlusPlusThings_basic_content_volatile_volatile
        basic_content/volatile/volatile.cpp
)
add_executable(CPlusPlusThings_basic_content_vptr_vtable_vptr1
        basic_content/vptr_vtable/vptr1.cpp
)
add_executable(CPlusPlusThings_c++2.0_c++11_alias
        c++2.0/c++11/alias.cpp
)
add_executable(CPlusPlusThings_c++2.0_c++11_auto
        c++2.0/c++11/auto.cpp
)
add_executable(CPlusPlusThings_c++2.0_c++11_constexpr
        c++2.0/c++11/constexpr.cpp
)
add_executable(CPlusPlusThings_c++2.0_c++11_decltype
        c++2.0/c++11/decltype.cpp
)
add_executable(CPlusPlusThings_c++2.0_c++11_default_delete
        c++2.0/c++11/default_delete.cpp
)
add_executable(CPlusPlusThings_c++2.0_c++11_explicit
        c++2.0/c++11/explicit.cpp
)
add_executable(CPlusPlusThings_c++2.0_c++11_final
        c++2.0/c++11/final.cpp
)
add_executable(CPlusPlusThings_c++2.0_c++11_hash
        c++2.0/c++11/hash.cpp
)
add_executable(CPlusPlusThings_c++2.0_c++11_initializer
        c++2.0/c++11/initializer.cpp
)
add_executable(CPlusPlusThings_c++2.0_c++11_lambda
        c++2.0/c++11/lambda.cpp
)
add_executable(CPlusPlusThings_c++2.0_c++11_move
        c++2.0/c++11/move.cpp
)
add_executable(CPlusPlusThings_c++2.0_c++11_noexcept
        c++2.0/c++11/noexcept.cpp
)
add_executable(CPlusPlusThings_c++2.0_c++11_nullptr
        c++2.0/c++11/nullptr.cpp
)
add_executable(CPlusPlusThings_c++2.0_c++11_override
        c++2.0/c++11/override.cpp
)
add_executable(CPlusPlusThings_c++2.0_c++11_rvalue
        c++2.0/c++11/rvalue.cpp
)
add_executable(CPlusPlusThings_c++2.0_c++11_template_template
        c++2.0/c++11/template_template.cpp
)
add_executable(CPlusPlusThings_c++2.0_c++11_tuple
        c++2.0/c++11/tuple.cpp
)
add_executable(CPlusPlusThings_c++2.0_c++11_type_alias
        c++2.0/c++11/type_alias.cpp
)
add_executable(CPlusPlusThings_c++2.0_c++11_uniform_initialization
        c++2.0/c++11/uniform_initialization.cpp
)
add_subdirectory(codingStyleIdioms)
add_subdirectory(concurrency)
add_subdirectory(design_pattern)
add_subdirectory(english/basic_content)
add_executable(CPlusPlusThings_effective_c++_2
        effective_c++/2.cpp
)
add_subdirectory(learn_class/modern_C++_30)